/*
 * Created on 24/06/2005
 *
 */
package com.master.bd.calculo_frete;

import java.sql.*;

import com.master.ed.*;
import com.master.root.*;
import com.master.util.*;
import com.master.util.bd.*;

/**
 * @author Tiago
 *
 */
public class Calcula_Frete_Documento extends Calcula_Frete{


    public Calcula_Frete_Documento(ExecutaSQL executasql) {
        super(executasql);
        // // ("Calcula_Frete_Documento 1");
    }


    public void calcula(Calcula_FreteED ed)
    throws Excecoes{


            Localiza_Tabela = new Localiza_Tabela(this.executasql);
            Tabela_FreteBean tabelaFreteED = new Tabela_FreteBean();

            ed.setLocalizado("N");
            ed.setDM_Tem_Cidade("S");
            ed.setDM_Tem_Peso("N");
            ed.setDM_Tem_Modal("N");
            ed.setDM_Tem_Validade("N");
            ed.setDM_Tem_Vigencia("N");
            ed.setDM_Tem_Empresa("N");
            ed.setDM_Tem_Regiao_Estado("N");
            ed.setDM_Tem_Estado("S");
            ed.setDM_Tem_Subregiao("S");
            ed.setDM_Tem_Regiao_Pais("N");
            ed.setDM_Tem_Pais("S");
            ed.setDM_Tabela_Reversa("N");
            ed.setDM_Tem_Tabela_Unidade("S");
            ed.setDM_Tem_Produto("S");

            ed.setDM_Percurso_Busca("Origem_Destino");




                // // ("Localiza_Tabela 1");

                tabelaFreteED = Localiza_Tabela.escolheTabela(ed);


                if ("S".equals(tabelaFreteED.getDM_Localizado())) {
                  // // ("achou tabela- oid >> " + tabelaFreteED.getOID());

                    this.calculaFretePeso(tabelaFreteED, ed);
                    this.calculaFreteValor(tabelaFreteED, ed);

                    // // ("calculou tudo ");

                }
    }

    protected void calculaFretePeso( Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed) throws Excecoes {
            // --------------------FRETE PESO--------------------------------------------------

            // // ("achou tabela- getNR_Peso >> " + ed.getNR_Peso_Tabela());

            Tipo_Movimento = "FP";
            VL_Movimento_Frete=0;

            if (!ed.getDM_Tipo_Localizacao().equals("I")) {

                            //// // ("DOC 1");
              if (ed.getNR_Peso_Tabela() <2){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate1C();
              }else if (ed.getNR_Peso_Tabela() < 3){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate2C();
              }else if (ed.getNR_Peso_Tabela() < 4){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate3C();
              }else if (ed.getNR_Peso_Tabela() < 5){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate4C();
              }else if (ed.getNR_Peso_Tabela() < 6){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate5C();
              }else if (ed.getNR_Peso_Tabela() < 7){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate6C();
              }else if (ed.getNR_Peso_Tabela() < 8){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate7C();
              }else if (ed.getNR_Peso_Tabela() < 9){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate8C();
              }else if (ed.getNR_Peso_Tabela() < 10){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate9C();
              }else if (ed.getNR_Peso_Tabela() == 10){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate10C();
              }
              if (VL_Movimento_Frete == 0.0 || ed.getNR_Peso_Tabela() > 10){
                VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate10C() +
                                     (tabelaFreteED.getVL_D_ExcedenteC() *
                                     (ed.getNR_Peso_Tabela()-10)));
              }
              if (VL_Movimento_Frete < tabelaFreteED.getVL_D_Ate1C()){
                VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate1C();
              }
    //// // (" FP ");
          }
          else {
            //// // ("DOC INTER 1");

            if (ed.getNR_Peso_Tabela () < 2) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate1D ();
            }
            else if (ed.getNR_Peso_Tabela () < 3) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate2D ();
            }
            else if (ed.getNR_Peso_Tabela () < 4) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate3D ();
            }
            else if (ed.getNR_Peso_Tabela () < 5) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate4D ();
            }
            else if (ed.getNR_Peso_Tabela () < 6) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate5D ();
            }
            else if (ed.getNR_Peso_Tabela () < 7) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate6D ();
            }
            else if (ed.getNR_Peso_Tabela () < 8) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate7D ();
            }
            else if (ed.getNR_Peso_Tabela () < 9) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate8D ();
            }
            else if (ed.getNR_Peso_Tabela () < 10) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate9D ();
            }
            else if (ed.getNR_Peso_Tabela () == 10) {
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate10D ();
            }
            if (VL_Movimento_Frete == 0.0 || ed.getNR_Peso_Tabela () > 10) {
              VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate10D () +
                                    (tabelaFreteED.getVL_D_ExcedenteD () *
                                     (ed.getNR_Peso_Tabela () - 10)));
            }
          }

          ed.setCD_Tipo_Movimento(Tipo_Movimento);
          ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
          ed.setVL_Movimento(VL_Movimento_Frete);
          this.incluiMovimento(ed);

    }

    protected void calculaFreteValor(Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed)  throws Excecoes{
        // --------------------AD VALOREM--------------------------------------------------
            Tipo_Movimento = "AV";
            VL_Movimento_Frete = (ed.getVL_Nota_Fiscal() * tabelaFreteED.getPE_D_Ad_Valorem() / 100);


            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);

    }

}
